#ifndef ANGULO_H
#define ANGULO_H

#include <QString>
#include "matematicas.h"
#include "geometria_global.h"

/**
 * Representa un angulo. Almacena su valor tanto en grados como en radianes
 * permitiendo su conversion automatica.
 * @author Jorge Berjano
 */
class GEOMETRIA_EXPORT  Angulo
{
public:
    Angulo(double grados = 0);
    ~Angulo();


    QString toString() const;
    bool operator==(const Angulo& otroAngulo) const;
    void setRadianes(double radianes);
    double getRadianes() const;
    void setGrados(double grados);
    double getGrados() const;
    double getGradosSigno() const;
    void sumarGrados(double grados);
    void sumar(const Angulo angulo);
    void restar(const Angulo& angulo);
    bool estaEntre(const Angulo& angulo1, const Angulo& angulo2) const;


    static Angulo suma(const Angulo& angulo1, const Angulo& angulo2);
    static Angulo resta(const Angulo& angulo1, const Angulo& angulo2);
    static Angulo anguloMedio(Angulo angulo1, Angulo angulo2);

private:
    double grados;
    double radianes;
};

#endif // ANGULO_H
